P2M: check whether hap mode is enabled before using 2mb pages
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 19 Jun 2009 07:42:58 +0000 (08:42 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 19 Jun 2009 07:42:58 +0000 (08:42 +0100)
This small patch checks whether hap mode is enabled when guest is
trying to allocate 2MB pages inside P2M. This prevents potential
errors when hap is disabled.

Cc: Chris Lalancette <clalance@redhat.com>
Cc: Sarathy, Bhavna <Bhavna.Sarathy@amd.com>
Signed-off-by: Wei Huang <wei.huang2@amd.com>
xen/arch/x86/mm/p2m.c

index 257641971a661d1e1badc038ebaa4019099e8d24..f410aaec40970ef145131309d9a8cb473816832c 100644 (file)
@@ -1499,7 +1499,11 @@ int set_p2m_entry(struct domain *d, unsigned long gfn, mfn_t mfn,
 
     while ( todo )
     {
-        order = (((gfn | mfn_x(mfn) | todo) & ((1ul << 9) - 1)) == 0) ? 9 : 0;
+        if ( is_hvm_domain(d) && d->arch.hvm_domain.hap_enabled )
+            order = (((gfn | mfn_x(mfn) | todo) & ((1ul << 9) - 1)) == 0) ?
+                9 : 0;
+        else
+            order = 0;
         rc = d->arch.p2m->set_entry(d, gfn, mfn, order, p2mt);
         gfn += 1ul << order;
         if ( mfn_x(mfn) != INVALID_MFN )